{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-10-22T12:44:52.696707Z",
     "start_time": "2025-10-22T12:44:52.693544Z"
    }
   },
   "source": [
    "import os.path\n",
    "\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "matplotlib.rc(\"font\",family='SimHei') # 中文字体\n",
    "plt.rcParams['axes.unicode_minus']=False  # 用来正常显示负号"
   ],
   "outputs": [],
   "execution_count": 3
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-22T12:44:54.686358Z",
     "start_time": "2025-10-22T12:44:54.510114Z"
    }
   },
   "cell_type": "code",
   "source": [
    "plt.plot([1,2,3], [100,500,300])\n",
    "plt.title('matplotlib中文字体测试', fontsize=25)\n",
    "plt.xlabel('X轴', fontsize=15)\n",
    "plt.ylabel('Y轴', fontsize=15)\n",
    "plt.show()"
   ],
   "id": "cdf897c8f0d3cdd5",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 4
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-22T12:44:47.384996Z",
     "start_time": "2025-10-22T12:44:47.381990Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import numpy as np\n",
    "import pandas as pd"
   ],
   "id": "6a1c3d9b0f1bed3c",
   "outputs": [],
   "execution_count": 1
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-22T12:45:20.590434Z",
     "start_time": "2025-10-22T12:45:20.570068Z"
    }
   },
   "cell_type": "code",
   "source": [
    "show_feature = 'Operating Condition'\n",
    "d_path = r'D:\\Code\\2-ZSL\\1-output\\论文实验结果\\H01\\exp-2'\n",
    "encoding_array = np.load(os.path.join(d_path,'attributes', 'overall_feature_extraction', 'train-Operating Condition-1.npy'), allow_pickle=True)"
   ],
   "id": "bdd97c7120d7631",
   "outputs": [],
   "execution_count": 8
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-22T12:45:23.388879Z",
     "start_time": "2025-10-22T12:45:23.384905Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# encoding_array = np.delete(encoding_array, 6998, axis=0)\n",
    "encoding_array.shape\n",
    "# np.save(r'D:\\Code\\2-ZSL\\1-output\\论文实验结果\\H01\\exp-2\\attributes\\overall_feature_extraction\\train-Operating Condition-1.npy', encoding_array)"
   ],
   "id": "9c05bbd4fd3efafa",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(6999, 512)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 9
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-22T12:42:41.296006Z",
     "start_time": "2025-10-22T12:42:41.275235Z"
    }
   },
   "cell_type": "code",
   "source": "df = pd.read_csv(os.path.join(d_path,f'train_disent.csv'))",
   "id": "e929165bf94baaac",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6999\n"
     ]
    }
   ],
   "execution_count": 7
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# target_part = '0'\n",
    "# part = 0\n",
    "# sample = df[df['标注类别名称'].str.split('-', expand=True)[part] == target_part]\n",
    "# classes = sample['标注类别名称'].unique()\n",
    "# class_list = np.unique(sample['标注类别名称'])\n",
    "# class_list, classes"
   ],
   "id": "76ab3a8931d877d6",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# classes = df['标注类别名称'].unique()\n",
    "# classes"
   ],
   "id": "5522628b615a9676",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "import seaborn as sns\n",
    "marker_list = ['.', ',', 'o', 'v', '^', '<', '>', '1', '2', '3', '4', '8', 's', 'p', 'P', '*', 'h', 'H', '+', 'x', 'X', 'D', 'd', '|', '_', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]"
   ],
   "id": "995abc5145d0faa6",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "class_list = np.unique(df[show_feature])\n",
    "class_list"
   ],
   "id": "7147a1dc85470f47",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "n_class = len(class_list) # 测试集标签类别数\n",
    "palette = sns.hls_palette(n_class) # 配色方案\n",
    "sns.palplot(palette)"
   ],
   "id": "d2f3dce9eb52a4b4",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "import random\n",
    "random.seed(42)\n",
    "random.shuffle(marker_list)\n",
    "random.shuffle(palette)"
   ],
   "id": "17019e87594c8a20",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "from sklearn.manifold import TSNE\n",
    "\n",
    "tsne = TSNE(n_components=2, max_iter=20000)\n",
    "X_tsne_2d = tsne.fit_transform(encoding_array)"
   ],
   "id": "8f15a5547ac6a48f",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": "X_tsne_2d.shape",
   "id": "231bd4aeb4941dbc",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "plt.figure(figsize=(14, 14), facecolor='white')\n",
    "for idx, fruit in enumerate(class_list): # 遍历每个类别\n",
    "    # 获取颜色和点型\n",
    "    color = palette[idx]\n",
    "    marker = marker_list[idx%len(marker_list)]\n",
    "\n",
    "    # 找到所有标注类别为当前类别的图像索引号\n",
    "    indices = np.where(df[show_feature]==fruit)\n",
    "    plt.scatter(X_tsne_2d[indices, 0], X_tsne_2d[indices, 1], color=color, marker=marker, label=fruit, s=150)\n",
    "\n",
    "plt.legend(fontsize=16, markerscale=1, bbox_to_anchor=(1, 1))\n",
    "plt.xticks([])\n",
    "plt.yticks([])\n",
    "# plt.savefig(r'D:\\Code\\2-ZSL\\Zero-Shot-Learning\\data\\输出结果\\CRWU_B_Experiment_001\\images\\可见类特征可视化.pdf', dpi=300) # 保存图像\n",
    "plt.show()"
   ],
   "id": "a6ddd330b331966c",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "df_2d = pd.DataFrame()\n",
    "df_2d['X'] = list(X_tsne_2d[:, 0].squeeze())\n",
    "df_2d['Y'] = list(X_tsne_2d[:, 1].squeeze())\n",
    "df_2d[show_feature] = df[show_feature]\n",
    "df_2d[show_feature] = df[show_feature]\n",
    "df_2d['图片路径'] = df['图片路径']\n",
    "# df_2d.to_csv(r'D:\\Code\\2-ZSL\\Zero-Shot-Learning\\data\\输出结果\\CRWU_B_Experiment_001\\可见类特征降维-工况-0.csv',\n",
    "#              index=False, encoding=\"utf-8-sig\")"
   ],
   "id": "4a5a2a2a939c9d0c",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": "df_2d",
   "id": "58d79a0da0eca809",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "import plotly.express as px\n",
    "fig = px.scatter(df_2d,\n",
    "                 x='X',\n",
    "                 y='Y',\n",
    "                 color=show_feature,\n",
    "                 labels=show_feature,\n",
    "                 symbol=show_feature,\n",
    "                 hover_name='图片路径',\n",
    "                 opacity=0.8,\n",
    "                 width=1000,\n",
    "                 height=600\n",
    "                )\n",
    "# 设置排版\n",
    "fig.update_layout(margin=dict(l=0, r=0, b=0, t=0))\n",
    "fig.show()\n",
    "# fig.write_html(os.path.join(d_path,f'{show_feature}.html'))"
   ],
   "id": "82471da6ef38dfe7",
   "outputs": [],
   "execution_count": null
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
